package org.feng.fxfront.pages.components;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableView;
import lombok.Data;
import org.feng.fxfront.StartApplication;
import org.feng.fxfront.util.TableColumnUtil;

import java.util.List;

/**
 * 自定义表格视图组件
 *
 * @author 01434188
 */
@Data
public class CustomTableViewComponent<T> {

    /**
     * 表格视图
     */
    private TableView<T> tableView;

    private ObservableList<T> data;

    public CustomTableViewComponent(Class<T> beanClass, List<T> dataList) {
        tableView = new TableView<>();

        // 设置可编辑
        tableView.setEditable(true);
        // 表格宽度
        tableView.setMaxWidth(((StartApplication.SCREEN_WIDTH * 0.8) - StartApplication.LEFT_MENU_WIDTH) * 0.8);
        // 设置可选择多行数据
        tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        // 解析表头和列信息
        TableColumnUtil.parseColumnsByClass(tableView.getColumns(), beanClass);
        // 添加表格数据
        data = FXCollections.observableArrayList();
        data.addAll(dataList);
        tableView.setItems(data);
    }


    public void resetData(List<T> newDataList) {
        ObservableList<T> list = FXCollections.observableArrayList();
        list.addAll(newDataList);
        data = list;
        tableView.setItems(list);
    }
}
